Aurora ServerlessでログをCloudWatch Logsへ出力可能になりました
大栗です。
先程Aurora ServerlessのログをCloudWatch Logsへ出力できるようになりましたので試してみました。
- Amazon Aurora Serverless Publishes Logs to Amazon CloudWatch
- Document History - Uploading to CloudWatch Aurora Serverless
- Viewing Aurora Serverless DB Clusters
Aurora Serverlessのログ出力
以前のAurora Serverlessは詳細なログ出力の機能は無く、RDSとしてのイベント情報のみが参照可能でした。そのためDB内部の情報を取得出来ませんでした。今回のアップデートによりCloudWatch Logsへのログ出力が可能になり、詳しい情報が取得できます。
出力可能なログは普通のAurora MySQLと同様に以下のもののようです。
- エラーログ
- 監査ログ
- 一般ログ
- スロークエリログ
また、今回のアップデートの伴ってクラスターパラメータグループでインスタンス用の項目も設定できるようになっています。そのため、今までクラスターパラメータグループでは設定できなかったslow logやgeneral logの設定も行えるようになっています。
やってみる
今回は東京リージョンで試してみます。
クラスターパラメータグループの設定
まずログ設定のためのクラスターパラメータグループを作成します。
RDSコンソールのパラメータグループの画面でパラメータグループの作成
をクリックします。
以下のように設定を行い、作成
をクリックします。
項目名 | 値 | 備考 |
---|---|---|
パラメータグループファミリー | aurora5.6 | Aurora Serverlessは5.6のみのため |
タイプ | DB Cluster Parameter Group | |
グループ名 | serverless-1 | 自由に設定して下さい |
説明 | <任意> |
次にログ出力の設定を行います。
エラーログ
エラーログは設定無しで出力されるため割愛します。
監査ログ
監査ログはクラスターパラメータグループに以下の設定を行います。
項目名 | 設定可能な値 | 備考 |
---|---|---|
server_audit_events | CONNECT, QUERY, QUERY_DCL, QUERY_DDL, QUERY_DML, TABLE | 監査する対象のイベントです。複数イベントの入力が可能です。 |
server_audit_excl_users | <なし> | 監査対象外のユーザなし |
server_audit_incl_users | <なし> | 全てのユーザが対象 |
server_audit_logging | 1 | 監査ログを有効にするか設定します。 |
server_audit_logs_upload | 1 | 監査ログのCloudWatch Logsへのアップロードを有効にするか設定します。 |
一般ログ
一般ログはクラスターパラメータグループに以下の設定を行います。
項目名 | 設定可能な値 | 備考 |
---|---|---|
general_log | 1 | 監査ログを有効にするか設定します。 |
スロークエリログ
スロークエリログはクラスターパラメータグループに以下の設定を行います。スロークエリの設定にはlog_queries_not_using_indexes
などもありますがここでは割愛します。
項目名 | 設定可能な値 | 備考 |
---|---|---|
slow_query_log | 1 | スロークエリログを有効にするか設定します。 |
long_query_time | 1 | スロークエリを出力する実行時間の閾値(秒) |
Aurora Serverlessを起動する
Aurora Serverlessを起動します。
RDSコンソールのデータベースの画面でデータベースの作成
をクリックします。
エンジンのオプションでAmazon Aurora
を選択して、エディションでMySQL 5.6 との互換性
を選択して次へ
をクリックします。
以下のように設定して、次へ
をクリックします。
項目 | 値 |
---|---|
Capacity type | Serverless |
DB クラスター識別子 | <任意> |
マスターユーザの名前 | <任意> |
マスターパスワード | <任意> |
パスワードの確認 | <マスターパスワードの値> |
今回は以下のように設定します。
項目 | 値 | 備考 |
---|---|---|
最小 Aurora キャパシティーユニット | 2 | |
最大 Aurora キャパシティーユニット | 64 | |
Virtual Private Cloud (VPC) | デフォルト VPC | |
サブネットグループ | default | |
VPC セキュリティグループ | 既存の VPC セキュリティグループ の選択(default) |
追加設定
を開き以下の設定を行って、データベースの作成
をクリックします。
項目 | 値 | 備考 |
---|---|---|
DB クラスターのパラメータグループ | serverless-1 | クラスターパラメータグループの設定 で作成したものを設定 |
バックアップの保存期間 | 1日 | |
マスターキー | <任意> | |
削除保護の有効化 | チェック |
Aurora Serverlessが起動するまで待ちます。
Aurora Serverlessが起動したら対象のクラスタを選択して、
ログを確認する
まずAurora Serverlessにログイン確認をしてみます。普通にログインができます。
$ mysql -uawsuser -pmypassword -h serverless-1.cluster-a1b2c3d4e5f6.ap-northeast-1.rds.amazonaws.com Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 5.6.10 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
SQLも実行してみます。スロークエリを出力するためにsleepで5秒待ってみます。
MySQL [(none)]> select now(); +---------------------+ | now() | +---------------------+ | 2019-02-26 08:26:18 | +---------------------+ 1 row in set (0.00 sec) MySQL [(none)]> select sleep(5); +----------+ | sleep(5) | +----------+ | 0 | +----------+ 1 row in set (5.00 sec) MySQL [(none)]>
次にログを確認します。ログは以下の命名ルールでCloudWatch Logsに出力されます。
ログの種類 | ロググループ名 |
---|---|
エラーログ | /aws/rds/cluster/<クラスタ名>/error |
監査ログ | /aws/rds/cluster/<クラスタ名>/audit |
一般ログ | /aws/rds/cluster/<クラスタ名>/general |
スロークエリログ | /aws/rds/cluster/<クラスタ名>/slowquery |
各々のログを確認してみます。
エラーログ
監査ログ
一般ログ
スロークエリログ
さいごに
ようやくDBの詳細情報が取れるようになりました。基本的には開発や検証用途の目的でAurora Serverlessを使用するものですが、何かあったときにはログがないと状況が掴めません。CloudWatch Logsなのでログを出力しすぎると高コストになってしまいますが、できる限りログを出力したほうが良いかもしれません。